<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        
    </style>
</head>
<body>
    <ul class="list">
        <li>link1</li>
        <li>link2</li>
        <li>link3</li>
        <li>link4</li>
        <li>link5</li>
        <li>link6</li>
    </ul>
</body>
<script>
    
    // const fn = (function(){
    //     let a = 0;
    //     // 定义：局部
    //     return function (){
    //         a++;
    //         console.log(a);
    //     }
    // })();
    
    // // 执行：全局
    // // 函数在执行时，可以获取到自身所在定义作用域中的数据
    // fn();
    // fn();
    // fn();



    // function a(b){
    //     // 执行：局部
    //     b()
    // }
    // // 定义：全局
    // a( function(){
    //     // b
    // } )



    // ;const x = (function(){
    //     // 定义：局部A
    //     return function(){

    //     }
    // })();
    // function y(X){
    //     // 执行：局部B
    //     X();
    // }

    // y( x );


    // =========

    // 循环中绑定事件，事件处理函数内，获取循环的计数器

    // const ali = document.querySelectorAll(".list li");

    // 函数在执行时，可以获取到自身所在定义作用域中的数据

    // for(var i=0; i<ali.length; i++){
    //     ali[i].onclick = (function(x){
    //         return function(){
    //             console.log(x);
    //         }
    //     })(i);
    // }

    // for(var i=0; i<ali.length; i++){
    //     ;(function(x){
    //         ali[i].onclick = function(){
    //             console.log(x);
    //         }
    //     })(i);
    // }

    // for(let i=0; i<ali.length; i++){
    //     ali[i].onclick = function(){
    //         console.log(i);
    //     }
    // }


    // ==========

    // 可以给 不能给回调函数传参的内置函数 的回调函数传参

    // setTimeout( fn("hello"), 1000);
    // function fn(a){
    //     return function(){
    //         console.log(a);
    //     }
    // }

    // 给事件处理函数传参
    // document.onclick = fn("world");
    // function fn(a){
    //     return function(eve){
    //         console.log(a, eve);
    //     }
    // }




    // 回调函数：当一个函数A作为参数传到另一个函数B中，此时函数A是函数B的回调函数

</script>
</html>